.TH std::contiguous_iterator 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::contiguous_iterator \- std::contiguous_iterator

.SH Synopsis
   Defined in header <iterator>
   template< class I >

       concept contiguous_iterator =
           std::random_access_iterator<I> &&
           std::derived_from</*ITER_CONCEPT*/<I>,
   std::contiguous_iterator_tag> &&
           std::is_lvalue_reference_v<std::iter_reference_t<I>> &&
           std::same_as<                                                        (since
               std::iter_value_t<I>,                                            C++20)
   std::remove_cvref_t<std::iter_reference_t<I>>
           > &&
           requires(const I& i) {
               { std::to_address(i) } ->
                 std::same_as<std::add_pointer_t<std::iter_reference_t<I>>>;

           };

   The contiguous_iterator concept refines random_access_iterator by providing a
   guarantee the denoted elements are stored contiguously in the memory.

.SH Notes

   contiguous_iterator is modeled by every pointer type to complete object type.

   Iterator types in the standard library that are required to satisfy the
   LegacyContiguousIterator requirements in C++17 are also required to model
   contiguous_iterator in C++20.

.SH See also

                          specifies that a bidirectional_iterator is a random-access
   random_access_iterator iterator, supporting advancement in constant time and
   (C++20)                subscripting
                          (concept)
